package icu.javayanglei.enumeration;

/**
 * 状态码枚举
 * <p>
 * 常见的 http 状态码
 * 200 - 请求成功
 * 301 - 资源（网页等）被永久转移到其它URL
 * 404 - 请求的资源（网页等）不存在
 * 500 - 内部服务器错误
 * <p>
 * <p>
 * #1000～1999 区间表示参数错误
 * #2000～2999 区间表示用户错误
 * #3000～3999 区间表示接口异常
 *
 * @author yang
 * @version 1.0.0
 * @date 2020-11-21 23:55
 */
public enum ResultCode {

    /**
     * 成功状态码
     */
    SUCCESS(1, "成功"),

    /**
     * 参数错误 1001-1999
     */
    PARAM_IS_INVALID(1001, "参数无效"),
    /**
     * 参数错误 1001-1999
     */
    PARAM_IS_BLANK(1002, "参数为空"),
    /**
     * 参数错误 1001-1999
     */
    PARAM_TYPE_BIND_ERROR(1003, "参数类型错误"),
    /**
     * 参数错误 1001-1999
     */
    PARAM_NOT_COMPLETE(1004, "参数缺失"),

    /**
     * 用户错误 2001-2999
     */
    USER_NOT_LOGGED_IN(2001, "用户未登录,访问的路径需要验证,请登录"),

    /**
     * 用户错误 2001-2999
     */
    USER_L0GIN_ERROR(2002, "账号不存在或密码错误"),

    /**
     * 用户错误 2001-2999
     */
    USER_ACCOUNT_FORBIDDEN(2003, "账号已被禁用"),

    /**
     * 用户错误 2001-2999
     */
    USER_NOT_EXIST(2004, "用户不存在"),
    /**
     * 用户错误 2001-2999
     */
    USER_HAS_EXISTED(2005, "用户已存在"),
    /**
     * 服务器错误 没有此ID 3001
     */
    SERVER_NO_SUCH_ID(3001, "没有此ID");

    private Integer code;
    private String message;

    ResultCode() {
    }

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer code() {
        return this.code;
    }

    public String message() {
        return this.message;
    }
}
